Consulta de Guías Docentes



Academic Year/course: 2023/24

439 - Bachelor's Degree in Informatics Engineering

30232 - Algorithms for Difficult Problems


Syllabus Information

Academic year:
2023/24
Subject:
30232 - Algorithms for Difficult Problems
Faculty / School:
110 - Escuela de Ingeniería y Arquitectura
Degree:
439 - Bachelor's Degree in Informatics Engineering
ECTS:
6.0
Year:
4
Semester:
First semester
Subject type:
---
Module:
---

1. General information

 

In this subject, students will improve their ability to design and develop algorithms by focusing on probabilistic, approximate and heuristic techniques . The student will learn to recognize the problems in whose solution these techniques are used , to design algorithms that use them and to justify their correctness and efficiency.

 

2. Learning results

 

The student, in order to pass this subject, must demonstrate the following results...

1. Know the non-exact computational models and is able to select the appropriate one and use it for modeling heterogeneous application domains.

2. Be able to identify NP-difficult problems.

3. Know probabilistic, approximate and heuristic algorithmic techniques for the same.

4. Know how to identify the most relevant components of a problem and select the most appropriate approximate technique for it and to argue in a reasoned way such choice.

5. Know how to compare problems and use this comparison to solve one problem from an efficient solution of another.

6. Know how to reason about the error rate and efficiency of approximate and probabilistic algorithms.

7. Know how to apply amortized efficiency analysis to advanced data structures.

8.Can work in a group, identify group objectives, outline a work plan to achieve them, recognize the different roles within a team, and commit to the tasks assigned.

9. Manage self-learning and development including management and organizational time.

10. Appreciate the need for continuous learning.

 

3. Syllabus

 

1. Introduction. NP-hard problems. Optimization problems.

2. Approximate algorithms. Concept. Algorithm design. Guarantees and limits.

3. Probabilistic algorithms: Las Vegas and Monte Carlo. Analysis. Pseudo-random generators.

4. Heuristics. Simulated annealing (simulated annealing).

5. Genetic algorithms.

6. Amortized analysis. Advanced data structures.

7. Specialized algorithms.

 

4. Academic activities

 

The program offered to the student to help their achieve the expected results comprises the following activities...

 

The subject syllabus will be developed in the classes taught in the classroom.


In the problem classes, problems will be solved by applying the concepts and techniques presented in the course syllabus. Problems and exercises will be proposed to be solved before the problem class at where different solutions to these problems will be presented and discussed. Exercises will also be proposed during the session of problems to be solved during the session, some individually and others to be worked in groups.


The practical work is carried out in a computer laboratory or on the personal computers of students. In the practice sessions students will work in teams and perform a series of programming tasks directly related to the topics studied in the subject. For this purpose, a series of works or programming exercises will be proposed for students to solve in groups and deliver them within the deadlines set in each case.

 

 

 

5. Assessment system

 

The student must demonstrate that they have achieved the intended learning outcomes by means of the following assessment activities

 

Recommended option (progressive release of final exams):

1. Practical part:

  • Laboratory practices (in groups) during the four-month period: 20%.

2. Part of theory and problems:

  • Individual work exercises during the four-month period: 20%.
  • Intermediate written test: 30%.
  • Final exam (take only one part): 30%.

 

Option based exclusively on final exams:

1. Practical part:

  • Practical (individual) programming exam: 20%.

2. Part of theory and problems:

  • Final exam (to be completed in its entirety): 80%.

 

 


Curso Académico: 2023/24

439 - Graduado en Ingeniería Informática

30232 - Algoritmia para problemas difíciles


Información del Plan Docente

Año académico:
2023/24
Asignatura:
30232 - Algoritmia para problemas difíciles
Centro académico:
110 - Escuela de Ingeniería y Arquitectura
Titulación:
439 - Graduado en Ingeniería Informática
Créditos:
6.0
Curso:
4
Periodo de impartición:
Primer semestre
Clase de asignatura:
---
Materia:
---

1. Información básica de la asignatura

En esta asignatura el alumno mejorará su capacidad para diseñar y desarrollar algoritmos incidiendo en las técnicas probabilistas, aproximadas y heurísticas. El alumno aprenderá a reconocer los problemas en cuya solución se utilizan esas técnicas, a diseñar algoritmos que las utilicen y a justificar la corrección y eficiencia de los mismos.

 

2. Resultados de aprendizaje

El estudiante, para superar esta asignatura, deberá demostrar los siguientes resultados...

  1. Conoce los modelos de computación no exactos y es capaz de seleccionar el adecuado y utilizarlo para el modelado de dominios de aplicación heterogéneos.
  2. Es capaz de identificar los problemas NP-difíciles.
  3. Conoce técnicas algorítmicas probabilistas, aproximadas y heurísticas para los mismos.
  4. Sabe identificar las componentes más relevantes de un problema y seleccionar la técnica aproximada más adecuada para el mismo, además de argumentar de forma razonada dicha elección.
  5. Sabe comparar problemas y utilizar dicha comparación para resolver un problema a partir de una solución eficiente de otro.
  6. Sabe razonar sobre la tasa de error y la eficiencia de los algoritmos aproximados y probabilistas.
  7. Sabe aplicar el análisis amortizado de eficiencia a estructuras de datos avanzadas.
  8. Puede trabajar en grupo, identificar objetivos del grupo, trazar un plan de trabajo para alcanzarlo, reconocer los diferentes papeles dentro de un equipo y asume el compromiso de las tareas encomendadas.
  9. Gestiona el auto-aprendizaje y el desarrollo incluyendo el tiempo de gestión y de organización.
  10. Aprecia la necesidad del aprendizaje continuo.

3. Programa de la asignatura

  1. Introducción. Los problemas NP-difíciles. Los problemas de optimización.
  2. Algoritmos aproximados. Concepto. Diseño de algoritmos. Garantías y límites.
  3. Algoritmos probabilistas: Las Vegas y Montecarlo. Análisis. Generadores pseudoaleatorios.
  4. Heurísticas. Simulated annealing (templado simulado).
  5. Algoritmos genéticos.
  6. Análisis amortizado. Estructuras de datos avanzadas.
  7. Algoritmos especializados.

4. Actividades académicas

El programa que se ofrece al estudiante para ayudarle a lograr los resultados previstos comprende las siguientes actividades...

  1. En las clases impartidas en el aula se desarrollará el temario de la asignatura.
  2. En las clases de problemas se resolverán problemas de aplicación de los conceptos y técnicas presentadas en el programa de la asignatura. Se propondrán problemas y ejercicios para ser resueltos antes de la clase de problemas en la que se presentarán y discutirán diferentes soluciones a dichos problemas. También se propondrán ejercicios durante la sesión de problemas para ser resueltos durante la misma, algunos de forma individual y otros para ser trabajados en grupo.
  3. El trabajo de prácticas se desarrolla en un laboratorio informático o bien en los computadores personales de los alumnos. En estas sesiones los alumnos deberán trabajar en equipo y realizar una serie de trabajos de programación directamente relacionados con los temas estudiados en la asignatura. Para ello se propondrán una serie de trabajos o ejercicios de programación para que los alumnos los resuelvan en grupo y los entreguen dentro de los plazos de tiempo que se fijen en cada caso.

5. Sistema de evaluación

El estudiante deberá demostrar que ha alcanzado los resultados de aprendizaje previstos mediante las siguientes actividades de evaluación

Opción recomendada (liberación progresiva de exámenes finales):

  1. Parte práctica:
    • Prácticas de laboratorio (en grupo) durante el cuatrimestre: 20%.
  2. Parte de teoría y problemas:
    • Ejercicios de trabajo individual durante el cuatrimestre: 20%.
    • Prueba escrita intermedia: 30%.
    • Examen final (realizar sólo una parte): 30%.

Opción basada exclusivamente en exámenes finales:

  1. Parte práctica:
    • Examen práctico (individual) de programación: 20%.
  2. Parte de teoría y problemas:
    • Examen final (realizarlo completo): 80%.